//@author A0096466N
//
// **********
//
// searcher class takes in the entire storage of tasks via vector<Task>
// and returns the searched tasks via vector<Task>
//
// possible searches:
//		by taskname
//		by date
//		by interval
//		by priority
//		by status
//
// searcher first tries to search for priority, interval, deadline, status.
// if unable to find any, search by taskname.
//
//
// **********

#ifndef SEARCHER_H
#define SEARCHER_H
#define _CRT_SECURE_NO_WARNINGS
#include "Task.h"
#include "parser.h"
#include "Sorter.h"
class Searcher {

private:
	int calculateLevenshteinDistance(const string &, const string &);
	int typoTolerance(int);
	vector<Task> searchDeadline(string,vector<Task>);
	vector<Task> searchPriority(string,vector<Task>);
	vector<Task> searchStatus(string,vector<Task>);
	vector<Task> searchTaskName(string,vector<Task>);
	vector<Task> searchInterval(string,vector<Task>);

public:
	Searcher(void);
	~Searcher(void);
	vector<Task> execute(string,vector<Task>);
	

};

#endif

